package jp.co.menox.controller.tmserver.borrow;

import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import java.util.Map;

import jp.co.menox.controller.tmserver.TmServerControllerBase;
import jp.co.menox.tmcommon.model.Borrowing;
import jp.co.menox.tmcommon.model.Lending;
import jp.co.menox.tmserver.searchform.SampleSearchForm;
import jp.co.menox.tmserver.service.BorrowingService;
import jp.co.menox.tmserver.service.CategoryService;
import jp.co.menox.tmserver.service.LendingService;

import org.slim3.controller.Navigation;
import org.slim3.util.BeanUtil;

/**
 * 検索条件による一覧リストの表示のサンプル
 * @author
 *
 */
public class _BorrowingSearchController extends TmServerControllerBase {

    protected BorrowingService service;
    protected CategoryService categoryService;
    {
        service = new BorrowingService();
        categoryService = new CategoryService();
    }

    /**
     * リクエスト処理の前処理<br />
     * 普通はこのメソッドのOverrideは不要。<br />
     * 何か画面個別で前処理が必要な場合は以下のように記述する。
     */
    @Override
    protected Navigation setUp() {
        
        // TODO: サンプル　画面個別にsetUp()が必要な場合の記述の仕方
        
        Navigation navi = super.setUp();
        if (navi != null) {
            // 共通処理でエラーになった場合
            return navi;
        }

        // TODO: ここから先に記述する。
        
        return null;
    }

    @Override
    public Navigation run() throws Exception {
        
//        // 検索条件は、検索条件form/modelを定義して、なるべく一括copyできるようにする。
//        BorrowingSearchForm searchForm = new BorrowingSearchForm();
//        BeanUtil.copy(request, searchForm);
//
////        searchForm.setNumberInPage(3);
////        System.out.println("----- 変更前 -----");
////        System.out.println("条件１　" + searchForm.getCate1() + " " + searchForm.getCate1Filter());
////        System.out.println("条件２　" + searchForm.getCate2() + " " + searchForm.getCate2Filter());
////        System.out.println("ページあたりのレコード数　" + searchForm.getNumberInPage());
////        System.out.println("全レコード数　" + searchForm.getMaximumNumber());
////        System.out.println("全ページ数　" + searchForm.getMaximumPageNumber());
////        System.out.println("表示対象ページ　" + searchForm.getCurrentPage());
////        System.out.println("表示レコード範囲　" 
////                + searchForm.getStartNumberInPage() + " - " 
////                + searchForm.getEndNumberInPage());
//
//        // 表示用リストを取得する
//        List<Borrowing> modelList;
//        String command = this.asString("command");
//        if (command == null || !command.equals("search")) {
//            // 初期呼び出し／検索ではない：　初期表示では空リスト
//            modelList = Collections.<Borrowing>emptyList();
//        } else {
//            // 検索：表示対象行範囲の切り出し
//            modelList = service.getLendingListWithSearchingCondition(searchForm);
//        }
//
//        // 表示用mapの取得
//        Map<Long, String> categoryMap = categoryService.getCategoryMap();
//        Map<Long, String> userMap = userService.getUserMap();
//
//        // 表示用変数設定
//        requestScope("borrowingList", modelList);
//        requestScope("cateMap", categoryMap);
//        requestScope("userMap", userMap);
//        requestScope("searchForm", searchForm);
        
        return forward("borrowingSearch.jsp");
    }
}
